Мы с Вами ранее посмотрели как можно создавать свойства вместе с создание элементом управления. Но сделать это можно и позже если Выбрать AddProperty():

Появится окошко настройки свойств:

PropertyType один из возможных типов PropertyName имя свойства Parametrs дополнительные параметры если они необходимы при задании свойства Get - Put необходиомость генерировать функции установку или получения свойства PropPutRef если установить его то свойство будет по ссылке.
В IDL будут добавлены строки:
[propget, id(1), helpstring("property TextColor")] HRESULT TextColor([out, retval] OLE_COLOR *pVal);
[propput, id(1), helpstring("property TextColor")] HRESULT TextColor([in] OLE_COLOR newVal);
И созданы функции члены для установки свойств.
STDMETHODIMP CCAtlContorl::get_TextColor(OLE_COLOR *pVal)
{
// TODO: Add your implementation code here
return S_OK;
}
STDMETHODIMP CCAtlContorl::put_TextColor(OLE_COLOR newVal)
{
// TODO: Add your implementation code here
return S_OK;
}
Итак давайте попробуем их использовать. Создадим переменную для хранения свойств.
......... } OLE_COLOR m_clrBackColor; OLE_COLOR m_clrBorderColor; OLE_COLOR m_clrTextColors; };
Код для установке и получения
STDMETHODIMP CCAtlContorl::get_TextColor(OLE_COLOR *pVal)
{
*pVal=m_clrTextColors;
return S_OK;
}
STDMETHODIMP CCAtlContorl::put_TextColor(OLE_COLOR newVal)
{
m_clrTextColors=newVal;
FireViewChange();
return S_OK;
}
Меняем код OnDraw.
HRESULT OnDraw(ATL_DRAWINFO& di)
{
RECT& rc = *(RECT*)di.prcBounds;
Rectangle(di.hdcDraw, rc.left, rc.top, rc.right, rc.bottom);
COLORREF clrText;
OleTranslateColor(m_clrTextColors, NULL, &clrText);
SetTextColor(di.hdcDraw,clrText);
SetTextAlign(di.hdcDraw, TA_CENTER|TA_BASELINE);
LPCTSTR pszText = _T("ATL 3.0 : CAtlContorl");
TextOut(di.hdcDraw,
(rc.left + rc.right) / 2,
(rc.top + rc.bottom) / 2,
pszText,
lstrlen(pszText));
return S_OK;
}
Можно собирать и проверять в ActiveX Control Test Container. Устанавливаем новое свойство.

Нажимаем применить и цвет изменится. Вообщем-то пример надуманный, потому что цвет текста есть в стандартных свойствах. Но зато принцип понятен, как свои свойства добавлять.